1 Introduction: Mapping of broad research field around EIST in v2

Here are preliminary results of the bibliometric mapping of EIST. Its purpose is:

The method for the research-field-mapping can be reviewed here:

Rakas, M., & Hain, D. S. (2019). The state of innovation system research: What happens beneath the surface?. Research Policy, 48(9), 103787.

Note: The analysis in this document depicts the larger research field around the department, thereby all analysis results are based on the publications of the department plus related

2 General Overview over the research field

Note: This section provides basic descriptives of th identified research fielld, including number of articles over time, countries, institutions, and authors. See Technical descriptionfor additional explanations.

2.1 Main Indicators: Publications, Authors, Countries

2.2 Connection between the research field’s Top Authors-Keywords-Journals

3 Topic modelling

Note: Here, we report the results of a LDA topic-modelling (basically, clustering on words) on all title+abstract texts. Identified topics can be interpreted as broad themes in the research field. See Technical descriptionfor additional explanations.

3.1 Topics by topwords

Note: While this static vies is helpful, I recommend using the interactive LDAVis version to be found under https://daniel-hain.github.io/biblio_lux_2022/output/topic_modelling/LDAviz_eist_v2/index.html#topic=1&lambda=0.60&term=. For functionality and usage, see ´Technical ´.

4 Knowledge Bases: Co-Citation network analysis

Note: This analysis refers the co-citation analysis, where the cited references and not the original publications are the unit of analysis. Identified knowledge bases can be interpreted as the knowledge foundation the field draws from. See Technical descriptionfor additional explanations.

name dgr_int dgr
Knowledge Base 1: KB 1: unlabeled (n = 137, density =15.92)
MARKARD J. RAVEN R. TRUFFER B. SUSTAINABILITY TRANSITIONS: AN EMERGING FIELD OF RESEARCH AND ITS PROSPECTS. RES. POLICY 41:6 (2012) 363 410
GEELS F.W. SCHOT J. TYPOLOGY OF SOCIOTECHNICAL TRANSITION PATHWAYS. RES. POLICY 36:3 (2007) 259 294
SMITH A. RAVEN R. WHAT IS PROTECTIVE SPACE? RECONSIDERING NICHES IN TRANSITIONS TO SUSTAINABILITY. RES. POLICY 41:6 (2012) 171 217
BERGEK A. JACOBSSON S. CARLSSON B. LINDMARK S. RICKNE A. ANALYZING THE FUNCTIONAL DYNAMICS OF TECHNOLOGICAL INNOVATION SYSTEMS: A SCHEME OF ANALYSI... 130 133
KIVIMAA P. KERN F. CREATIVE DESTRUCTION OR MERE NICHE SUPPORT? INNOVATION POLICY MIXES FOR SUSTAINABILITY TRANSITIONS. RES. POLICY 45:1 (2016) 118 141
GEELS F.W. TECHNOLOGICAL TRANSITIONS AS EVOLUTIONARY RECONFIGURATION PROCESSES: A MULTI-LEVEL PERSPECTIVE AND A CASE-STUDY. RES. POLICY 31:8–9 (2002) 108 111
SMITH A. STIRLING A. BERKHOUT F. THE GOVERNANCE OF SUSTAINABLE SOCIO-TECHNICAL TRANSITIONS. RES. POLICY 34:10 (2005) 107 131
COENEN L. BENNEWORTH P. TRUFFER B. TOWARD A SPATIAL PERSPECTIVE ON SUSTAINABILITY TRANSITIONS. RES. POLICY 41:6 (2012) 91 111
GEELS F.W. REGIME RESISTANCE AGAINST LOW-CARBON TRANSITIONS: INTRODUCING POLITICS AND POWER INTO THE MULTI-LEVEL PERSPECTIVE. THEORY CULT. SOC. 31:... 73 91
KEMP R. SCHOT J. HOOGMA R. REGIME SHIFTS TO SUSTAINABILITY THROUGH PROCESSES OF NICHE FORMATION: THE APPROACH OF STRATEGIC NICHE MANAGEMENT. TECHNO... 66 77
Knowledge Base 2: KB 2: unlabeled (n = 126, density =17.42)
GEELS F.W. TECHNOLOGICAL TRANSITIONS AS EVOLUTIONARY RECONFIGURATION PROCESSES: A MULTI-LEVEL PERSPECTIVE AND A CASE-STUDY. RES. POLICY 31 (2002) 357 581
GEELS F.W. SCHOT J. TYPOLOGY OF SOCIOTECHNICAL TRANSITION PATHWAYS. RES. POLICY 36 (2007) 297 462
MARKARD J. RAVEN R. TRUFFER B. SUSTAINABILITY TRANSITIONS: AN EMERGING FIELD OF RESEARCH AND ITS PROSPECTS. RES. POLICY 41 (2012) 182 355
SMITH A. RAVEN R. WHAT IS PROTECTIVE SPACE? RECONSIDERING NICHES IN TRANSITIONS TO SUSTAINABILITY. RES. POLICY 41 (2012) 177 296
KEMP R. SCHOT J. HOOGMA R. REGIME SHIFTS TO SUSTAINABILITY THROUGH PROCESSES OF NICHE FORMATION: THE APPROACH OF STRATEGIC NICHE MANAGEMENT. TECHNO... 117 165
GEELS F.W. ONTOLOGIES SOCIO-TECHNICAL TRANSITIONS (TO SUSTAINABILITY) 110 207
GEELS F.W. THE MULTI-LEVEL PERSPECTIVE ON SUSTAINABILITY TRANSITIONS: RESPONSES TO SEVEN CRITICISMS. ENVIRON. INNOV. SOC. TRANSIT. 1 (2011) 106 179
SCHOT J. GEELS F.W. STRATEGIC NICHE MANAGEMENT AND SUSTAINABLE INNOVATION JOURNEYS: THEORY FINDINGS RESEARCH AGENDA AND POLICY. TECHNOL. ANAL. STRA... 89 125
FARLA J. MARKARD J. RAVEN R. COENEN L. SUSTAINABILITY TRANSITIONS IN THE MAKING: A CLOSER LOOK AT ACTORS STRATEGIES AND RESOURCES. TECHNOL. FORECAS... 80 146
SMITH A. VOß J.P. GRIN J. INNOVATION STUDIES AND SUSTAINABILITY TRANSITIONS: THE ALLURE OF THE MULTI-LEVEL PERSPECTIVE AND ITS CHALLENGES. RES. POL... 64 71
Knowledge Base 3: KB 3: unlabeled (n = 44, density =52.64)
TURNHEIM B. GEELS F.W. THE DESTABILISATION OF EXISTING REGIMES: CONFRONTING A MULTI-DIMENSIONAL FRAMEWORK WITH A CASE STUDY OF THE BRITISH COAL IND... 91 180
BERGGREN C. MAGNUSSON T. SUSHANDOYO D. TRANSITION PATHWAYS REVISITED: ESTABLISHED FIRMS AS MULTI-LEVEL ACTORS IN THE HEAVY VEHICLE INDUSTRY. RES. P... 85 128
GEELS F.W. REGIME RESISTANCE AGAINST LOW-CARBON TRANSITIONS: INTRODUCING POLITICS AND POWER INTO THE MULTI-LEVEL PERSPECTIVE. THEORY CULT. SOC. 31 ... 75 208
KUNGL G. GEELS F.W. SEQUENCE AND ALIGNMENT OF EXTERNAL PRESSURES IN INDUSTRY DESTABILISATION: UNDERSTANDING THE DOWNFALL OF INCUMBENT UTILITIES IN ... 66 88
SMITH A. STIRLING A. BERKHOUT F. THE GOVERNANCE OF SUSTAINABLE SOCIO-TECHNICAL TRANSITIONS. RES. POLICY 34 (2005) 64 176
BERGEK A. BERGGREN C. MAGNUSSON T. HOBDAY M. TECHNOLOGICAL DISCONTINUITIES AND THE CHALLENGE FOR INCUMBENT FIRMS: DESTRUCTION DISRUPTION OR CREATIV... 51 68
PENNA C.C.R. GEELS F.W. MULTI-DIMENSIONAL STRUGGLES IN THE GREENING OF INDUSTRY: A DIALECTIC ISSUE LIFECYCLE MODEL AND CASE STUDY. TECHNOL. FORECAS... 50 65
GEELS F.W. RECONCEPTUALISING THE CO-EVOLUTION OF FIRMS-IN-INDUSTRIES AND THEIR ENVIRONMENTS: DEVELOPING AN INTER-DISCIPLINARY TRIPLE EMBEDDEDNESS F... 45 86
STIRLING A. TRANSFORMING POWER: SOCIAL SCIENCE AND THE POLITICS OF ENERGY CHOICES. ENERGY RES. SOC. SCI. 1 (2014) 34 37
STEEN M. WEAVER T. INCUMBENTS’ DIVERSIFICATION AND CROSS-SECTORIAL ENERGY INDUSTRY DYNAMICS. RES. POLICY 46 (2017) 31 38
Knowledge Base 4: KB 4: unlabeled (n = 34, density =44.03)
HANSEN T. COENEN L. THE GEOGRAPHY OF SUSTAINABILITY TRANSITIONS: REVIEW SYNTHESIS AND REFLECTIONS ON AN EMERGENT RESEARCH FIELD. ENVIRON. INNOV. SO... 70 134
COENEN L. BENNEWORTH P. TRUFFER B. TOWARD A SPATIAL PERSPECTIVE ON SUSTAINABILITY TRANSITIONS. RES. POLICY 41 (2012) 60 191
HODSON M. MARVIN S. CAN CITIES SHAPE SOCIO-TECHNICAL TRANSITIONS AND HOW WOULD WE KNOW IF THEY WERE?. RES. POLICY 39 (2010) 35 56
RAVEN R. SCHOT J. BERKHOUT F. SPACE AND SCALE IN SOCIO-TECHNICAL TRANSITIONS. ENVIRON. INNOV. SOC. TRANSIT. 4 (2012) 34 49
COENEN L. TRUFFER B. PLACES AND SPACES OF SUSTAINABILITY TRANSITIONS: GEOGRAPHICAL CONTRIBUTIONS TO AN EMERGING RESEARCH AND POLICY FIELD. EUR. PLA... 29 29
SENGERS F. RAVEN R. TOWARD A SPATIAL PERSPECTIVE ON NICHE DEVELOPMENT: THE CASE OF BUS RAPID TRANSIT. ENVIRON. INNOV. SOC. TRANSIT. 17 (2015) 26 30
TRUFFER B. MURPHY J.T. RAVEN R. THE GEOGRAPHY OF SUSTAINABILITY TRANSITIONS: CONTOURS OF AN EMERGING THEME. ENVIRON. INNOV. SOC. TRANSIT. 17 (2015) 25 36
KÖHLER J. GEELS F.W. KERN F. MARKARD J. ONSONGO E. WIECZOREK A. ALKEMADE F. AVELINO F. BERGEK A. BOONS F. FÜNFSCHILLING L. HESS D. HOLTZ G. HYYSALO... 22 35
BRIDGE G. BOUZAROVSKI S. BRADSHAW M. EYRE N. GEOGRAPHIES OF ENERGY TRANSITION: SPACE PLACE AND THE LOW-CARBON ECONOMY. ENERGY POLICY 53 (2013) 21 35
RUTHERFORD J. COUTARD O. URBAN ENERGY TRANSITIONS: PLACES PROCESSES AND POLITICS OF SOCIO-TECHNICAL CHANGE. URBAN STUD. 51 (2014) 18 27
Knowledge Base 5: KB 5: unlabeled (n = 33, density =63.26)
HOWELLS J. INTERMEDIATION AND THE ROLE OF INTERMEDIARIES IN INNOVATION. RES. POLICY 35 (2006) 81 91
KIVIMAA P. BOON W. HYYSALO S. KLERKX L. TOWARDS A TYPOLOGY OF INTERMEDIARIES IN SUSTAINABILITY TRANSITIONS: A SYSTEMATIC REVIEW AND A RESEARCH AGEN... 55 87
KIVIMAA P. GOVERNMENT-AFFILIATED INTERMEDIARY ORGANISATIONS AS ACTORS IN SYSTEM-LEVEL TRANSITIONS. RES. POLICY 43 (2014) 53 60
MIGNON I. KANDA W. A TYPOLOGY OF INTERMEDIARY ORGANIZATIONS AND THEIR IMPACT ON SUSTAINABILITY TRANSITION POLICIES. ENVIRON. INNOV. SOC. TRANSIT. 2... 44 44
BESSANT J. RUSH H. BUILDING BRIDGES FOR INNOVATION: THE ROLE OF CONSULTANTS IN TECHNOLOGY TRANSFER. RES. POLICY 24 (1995) 43 43
KLERKX L. LEEUWIS C. BALANCING MULTIPLE INTERESTS: EMBEDDING INNOVATION INTERMEDIATION IN THE AGRICULTURAL KNOWLEDGE INFRASTRUCTURE. TECHNOVATION 2... 43 43
POLZIN F. VON FLOTOW P. KLERKX L. ADDRESSING BARRIERS TO ECO-INNOVATION: EXPLORING THE FINANCE MOBILISATION FUNCTIONS OF INSTITUTIONAL INNOVATION I... 38 41
KIVIMAA P. MARTISKAINEN M. DYNAMICS OF POLICY CHANGE AND INTERMEDIATION: THE ARDUOUS TRANSITION TOWARDS LOW-ENERGY HOMES IN THE UNITED KINGDOM. ENE... 31 37
GLIEDT T. HOICKA C.E. JACKSON N. INNOVATION INTERMEDIARIES ACCELERATING ENVIRONMENTAL SUSTAINABILITY TRANSITIONS. J. CLEAN. PROD. 174 (2018) 28 28
KLERKX L. LEEUWIS C. ESTABLISHMENT AND EMBEDDING OF INNOVATION BROKERS AT DIFFERENT INNOVATION SYSTEM LEVELS: INSIGHTS FROM THE DUTCH AGRICULTURAL ... 24 24
Knowledge Base 6: KB 6: unlabeled (n = 30, density =63.68)
BERGEK A. JACOBSSON S. CARLSSON B. LINDMARK S. RICKNE A. ANALYZING THE FUNCTIONAL DYNAMICS OF TECHNOLOGICAL INNOVATION SYSTEMS: A SCHEME OF ANALYSI... 96 167
MARKARD J. TRUFFER B. TECHNOLOGICAL INNOVATION SYSTEMS AND THE MULTI-LEVEL PERSPECTIVE: TOWARDS AN INTEGRATED FRAMEWORK. RES. POLICY 37 (2008) 68 131
GEELS F.W. FROM SECTORAL SYSTEMS OF INNOVATION TO SOCIO-TECHNICAL SYSTEMS: INSIGHTS ABOUT DYNAMICS AND CHANGE FROM SOCIOLOGY AND INSTITUTIONAL THEO... 40 223
CARLSSON B. STANKIEWICZ R. ON THE NATURE FUNCTION AND COMPOSITION OF TECHNOLOGICAL SYSTEMS. J. EVOL. ECON. 1 (1991) 40 47
BERGEK A. HEKKERT M. JACOBSSON S. MARKARD J. SANDÉN B. TRUFFER B. TECHNOLOGICAL INNOVATION SYSTEMS IN CONTEXTS: CONCEPTUALIZING CONTEXTUAL STRUCTUR... 40 48
HEKKERT M.P. SUURS R.A.A. NEGRO S.O. KUHLMANN S. SMITS R.E.H.M. FUNCTIONS OF INNOVATION SYSTEMS: A NEW APPROACH FOR ANALYSING TECHNOLOGICAL CHANGE.... 38 64
WIECZOREK A.J. HEKKERT M.P. SYSTEMIC INSTRUMENTS FOR SYSTEMIC INNOVATION PROBLEMS: A FRAMEWORK FOR POLICY MAKERS AND INNOVATION SCHOLARS. SCI. PUBL... 38 47
BINZ C. TRUFFER B. GLOBAL INNOVATION SYSTEMS—A CONCEPTUAL FRAMEWORK FOR INNOVATION DYNAMICS IN TRANSNATIONAL CONTEXTS. RES. POLICY 46 (2017) 35 38
JACOBSSON S. BERGEK A. INNOVATION SYSTEM ANALYSES AND SUSTAINABILITY TRANSITIONS: CONTRIBUTIONS AND SUGGESTIONS FOR RESEARCH. ENVIRON. INNOV. SOC. ... 18 18
JACOBSSON S. JOHNSON A. THE DIFFUSION OF RENEWABLE ENERGY TECHNOLOGY: AN ANALYTICAL FRAMEWORK AND KEY ISSUES FOR RESEARCH. ENERGY POLICY 28 (2000) 15 18

5 Research Areas: Bibliographic coupling analysis

Note: This analysis refers the bibliographic coupling analysis, where original publications are the unit of analysis. Identified research areas can be interpreted as the field’s current research frontier. See Technical descriptionfor additional explanations.

AU PY TI dgr_int TC TC_year
Research Area 1: RA 1: unlabeled (n = 130, density =0.29)
JOHNSTONE P;NEWELL P 2018 SUSTAINABILITY TRANSITIONS AND THE STATE 0.89 117 29.25
EHNERT F;KERN F;BORGST... 2018 URBAN SUSTAINABILITY TRANSITIONS IN A CONTEXT OF MULTI-LEVEL GOVERNANCE: A COMPARISON OF FOUR EUROPEAN STATES 1.11 76 19.00
TZIVA M;NEGRO SO;KALFA... 2020 UNDERSTANDING THE PROTEIN TRANSITION: THE RISE OF PLANT-BASED MEAT SUBSTITUTES 0.53 73 36.50
VAN MIERLO B;BEERS PJ 2020 UNDERSTANDING AND GOVERNING LEARNING IN SUSTAINABILITY TRANSITIONS: A REVIEW 0.61 59 29.50
WITTMAYER JM;AVELINO F... 2017 ACTOR ROLES IN TRANSITION: INSIGHTS FROM SOCIOLOGICAL PERSPECTIVES 0.26 134 26.80
BINZ C;COENEN L;MURPHY... 2020 GEOGRAPHIES OF TRANSITION—FROM TOPICAL CONCERNS TO THEORETICAL ENGAGEMENT: A COMMENTARY ON THE TRANSITIONS RESEARCH AGENDA 0.50 67 33.50
MEELEN T;TRUFFER B;SCH... 2019 VIRTUAL USER COMMUNITIES CONTRIBUTING TO UPSCALING INNOVATIONS IN TRANSITIONS: THE CASE OF ELECTRIC VEHICLES 0.93 31 10.33
VERMUNT DA;NEGRO SO;VA... 2020 SUSTAINABILITY TRANSITIONS IN THE AGRI-FOOD SECTOR: HOW ECOLOGY AFFECTS TRANSITION DYNAMICS 1.00 27 13.50
OTTOSSON M;MAGNUSSON T... 2020 SHAPING SUSTAINABLE MARKETS—A CONCEPTUAL FRAMEWORK ILLUSTRATED BY THE CASE OF BIOGAS IN SWEDEN 0.70 35 17.50
DUYGAN M;STAUFFACHER M... 2019 A HEURISTIC FOR CONCEPTUALIZING AND UNCOVERING THE DETERMINANTS OF AGENCY IN SOCIO-TECHNICAL TRANSITIONS 0.84 29 9.67
Research Area 2: RA 2: unlabeled (n = 109, density =0.46)
PATTERSON J;SCHULZ K;V... 2017 EXPLORING THE GOVERNANCE AND POLITICS OF TRANSFORMATIONS TOWARDS SUSTAINABILITY 0.26 296 59.20
SARASINI S;LINDER M 2018 INTEGRATING A BUSINESS MODEL PERSPECTIVE INTO TRANSITION THEORY: THE EXAMPLE OF NEW MOBILITY SERVICES 0.70 78 19.50
VAN MOSSEL A;VAN RIJNS... 2018 NAVIGATORS THROUGH THE STORM: A REVIEW OF ORGANIZATION THEORIES AND THE BEHAVIOR OF INCUMBENT FIRMS DURING TRANSITIONS 0.82 60 15.00
KIVIMAA P;LAAKSO S;LON... 2021 MOVING BEYOND DISRUPTIVE INNOVATION: A REVIEW OF DISRUPTION IN SUSTAINABILITY TRANSITIONS 0.94 44 44.00
VAN DER JAGT APN;RAVEN... 2020 NATURE-BASED INNOVATION SYSTEMS 1.08 37 18.50
PAPACHRISTOS G 2019 SYSTEM DYNAMICS MODELLING AND SIMULATION FOR SOCIOTECHNICAL TRANSITIONS RESEARCH 0.66 55 18.33
OSUNMUYIWA O;KALFAGIAN... 2017 TRANSITIONS IN UNLIKELY PLACES: EXPLORING THE CONDITIONS FOR RENEWABLE ENERGY ADOPTION IN NIGERIA 0.92 32 6.40
HIRT LF;SCHELL G;SAHAK... 2020 A REVIEW OF LINKING MODELS AND SOCIO-TECHNICAL TRANSITIONS THEORIES FOR ENERGY AND CLIMATE SOLUTIONS 1.08 27 13.50
KERN F;ROGGE KS 2018 HARNESSING THEORIES OF THE POLICY PROCESS FOR ANALYSING THE POLITICS OF SUSTAINABILITY TRANSITIONS: A CRITICAL SURVEY 0.31 90 22.50
NYKAMP H 2017 A TRANSITION TO GREEN BUILDINGS IN NORWAY 1.36 20 4.00
Research Area 3: RA 3: unlabeled (n = 42, density =0.51)
KIVIMAA P;HYYSALO S;BO... 2019 PASSING THE BATON: HOW INTERMEDIARIES ADVANCE SUSTAINABILITY TRANSITIONS IN DIFFERENT PHASES 0.41 80 26.67
KANDA W;KUISMA M;KIVIM... 2020 CONCEPTUALISING THE SYSTEMIC ACTIVITIES OF INTERMEDIARIES IN SUSTAINABILITY TRANSITIONS 0.83 38 19.00
MIGNON I;KANDA W 2018 A TYPOLOGY OF INTERMEDIARY ORGANIZATIONS AND THEIR IMPACT ON SUSTAINABILITY TRANSITION POLICIES 0.42 49 12.25
MARTISKAINEN M;KIVIMAA P 2018 CREATING INNOVATIVE ZERO CARBON HOMES IN THE UNITED KINGDOM — INTERMEDIARIES AND CHAMPIONS IN BUILDING PROJECTS 0.26 58 14.50
MARTISKAINEN M 2017 THE ROLE OF COMMUNITY LEADERSHIP IN THE DEVELOPMENT OF GRASSROOTS INNOVATIONS 0.11 106 21.20
BERGEK A 2020 DIFFUSION INTERMEDIARIES: A TAXONOMY BASED ON RENEWABLE ELECTRICITY TECHNOLOGY IN SWEDEN 0.46 16 8.00
ROHE S 2020 THE REGIONAL FACET OF A GLOBAL INNOVATION SYSTEM: EXPLORING THE SPATIALITY OF RESOURCE FORMATION IN THE VALUE CHAIN FOR ON... 0.37 20 10.00
VAN LENTE H;BOON WPC;K... 2020 POSITIONING OF SYSTEMIC INTERMEDIARIES IN SUSTAINABILITY TRANSITIONS: BETWEEN STORYLINES AND SPEECH ACTS 0.34 15 7.50
RANDELLI F;ROCCHI B 2017 ANALYSING THE ROLE OF CONSUMERS WITHIN TECHNOLOGICAL INNOVATION SYSTEMS: THE CASE OF ALTERNATIVE FOOD NETWORKS 0.13 37 7.40
GOSENS J;BINZ C;LEMA R 2020 CHINA'S ROLE IN THE NEXT PHASE OF THE ENERGY TRANSITION: CONTRIBUTIONS TO GLOBAL NICHE FORMATION IN THE CONCENTRATED SOLAR... 0.18 23 11.50
Research Area 4: RA 4: unlabeled (n = 26, density =0.69)
TURNHEIM B;SOVACOOL BK 2020 FOREVER STUCK IN OLD WAYS? PLURALISING INCUMBENCIES IN SUSTAINABILITY TRANSITIONS 0.54 60 30.00
ROSENBLOOM D 2018 FRAMING LOW-CARBON PATHWAYS: A DISCURSIVE ANALYSIS OF CONTENDING STORYLINES SURROUNDING THE PHASE-OUT OF COAL-FIRED POWER ... 0.35 70 17.50
FEOLA G 2020 CAPITALISM IN SUSTAINABILITY TRANSITIONS RESEARCH: TIME FOR A CRITICAL TURN? 0.08 94 47.00
LOORBACH D;WITTMAYER J... 2020 TRANSFORMATIVE INNOVATION AND TRANSLOCAL DIFFUSION 0.06 85 42.50
SILLAK S;KANGER L 2020 GLOBAL PRESSURES VS. LOCAL EMBEDDEDNESS: THE DE- AND RESTABILIZATION OF THE ESTONIAN OIL SHALE INDUSTRY IN RESPONSE TO CLI... 0.34 15 7.50
BRISBOIS MC 2020 SHIFTING POLITICAL POWER IN AN ERA OF ELECTRICITY DECENTRALIZATION: RESCALING, REORGANIZATION AND BATTLES FOR INFLUENCE 0.17 23 11.50
KUNGL G;GEELS FW 2018 SEQUENCE AND ALIGNMENT OF EXTERNAL PRESSURES IN INDUSTRY DESTABILISATION: UNDERSTANDING THE DOWNFALL OF INCUMBENT UTILITIE... 0.05 67 16.75
AMPE K;PAREDIS E;ASVEL... 2021 INCUMBENTS' ENABLING ROLE IN NICHE-INNOVATION: POWER DYNAMICS IN A WASTEWATER PROJECT 0.30 11 11.00
BOHNSACK R;PINKSE J;WA... 2016 THE INSTITUTIONAL EVOLUTION PROCESS OF THE GLOBAL SOLAR INDUSTRY: THE ROLE OF PUBLIC AND PRIVATE ACTORS IN CREATING INSTIT... 0.13 24 4.00
STALMOKAITĖ I;HASSLER B 2020 DYNAMIC CAPABILITIES AND STRATEGIC REORIENTATION TOWARDS DECARBONISATION IN BALTIC SEA SHIPPING 0.27 10 5.00

6 Knowledge Bases, Research Areas & Topics Interaction

6.1 Joint Overview over Knowledge Bases, Research Areas, and Topics

This plot shows the connection of publications in the research areas to knowledge bases (by citations) and topics (by gamma, document-topic weight)

8 Collaboration

8.1 Collaboration network

9 Endnotes

R version 4.2.1 (2022-06-23)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Ventura 13.2.1

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] directlabels_2021.1.13 RColorBrewer_1.1-3     kableExtra_1.3.4       knitr_1.40             patchwork_1.1.2        ggrepel_0.9.1         
 [7] ggforce_0.4.1          plotly_4.10.1          ggraph_2.1.0           widyr_0.1.5            tsne_0.1-3.1           LDAvis_0.3.2          
[13] ldatuning_1.0.2        textstem_0.1.4         koRpus.lang.en_0.1-4   koRpus_0.13-8          sylly_0.1-6            topicmodels_0.2-12    
[19] tidytext_0.3.4         RNewsflow_1.2.6        Matrix_1.5-1           tm_0.7-9               NLP_0.2-1              igraph_1.3.5          
[25] tidygraph_1.2.2        bibliometrix_4.1.0     magrittr_2.0.3         forcats_0.5.2          stringr_1.4.1          dplyr_1.0.10          
[31] purrr_0.3.5            readr_2.1.3            tidyr_1.2.1            tibble_3.1.8           ggplot2_3.4.0          tidyverse_1.3.2       

loaded via a namespace (and not attached):
  [1] readxl_1.4.1           backports_1.4.1        systemfonts_1.0.4      servr_0.25             plyr_1.8.8             lazyeval_0.2.2        
  [7] crosstalk_1.2.0        SnowballC_0.7.0        digest_0.6.30          htmltools_0.5.3        viridis_0.6.2          fansi_1.0.3           
 [13] googlesheets4_1.0.1    cluster_2.1.3          tzdb_0.3.0             openxlsx_4.2.5.1       graphlayouts_0.8.3     modelr_0.1.9          
 [19] vroom_1.6.0            svglite_2.1.0          colorspace_2.0-3       rvest_1.0.3            pubmedR_0.0.3          haven_2.5.1           
 [25] xfun_0.34              crayon_1.5.2           jsonlite_1.8.3         bibliometrixData_0.3.0 glue_1.6.2             polyclip_1.10-4       
 [31] gtable_0.3.1           gargle_1.2.1           emmeans_1.8.2          webshot_0.5.4          rentrez_1.2.3          scales_1.2.1          
 [37] mvtnorm_1.1-3          DBI_1.1.3              Rcpp_1.0.9             viridisLite_0.4.1      xtable_1.8-4           dimensionsR_0.0.3     
 [43] flashClust_1.01-2      bit_4.0.5              stats4_4.2.1           DT_0.26                htmlwidgets_1.5.4      httr_1.4.4            
 [49] ellipsis_0.3.2         modeltools_0.2-23      factoextra_1.0.7       pkgconfig_2.0.3        XML_3.99-0.12          farver_2.1.1          
 [55] sass_0.4.2             multcompView_0.1-8     dbplyr_2.2.1           utf8_1.2.2             RJSONIO_1.3-1.7        tidyselect_1.2.0      
 [61] labeling_0.4.2         rlang_1.0.6            reshape2_1.4.4         later_1.3.0            cachem_1.0.6           munsell_0.5.0         
 [67] cellranger_1.1.0       tools_4.2.1            cli_3.4.1              generics_0.1.3         corrr_0.4.4            broom_1.0.1           
 [73] evaluate_0.17          fastmap_1.1.0          yaml_2.3.6             bit64_4.0.5            fs_1.5.2               zip_2.2.2             
 [79] mime_0.12              slam_0.1-50            leaps_3.1              xml2_1.3.3             tokenizers_0.2.3       compiler_4.2.1        
 [85] rstudioapi_0.14        reprex_2.0.2           syuzhet_1.0.6          tweenr_2.0.2           bslib_0.4.0            stringi_1.7.8         
 [91] highr_0.9              lattice_0.20-45        vctrs_0.5.1            stringdist_0.9.10      pillar_1.8.1           lifecycle_1.0.3       
 [97] rscopus_0.6.6          jquerylib_0.1.4        estimability_1.4.1     data.table_1.14.4      httpuv_1.6.6           sylly.en_0.1-3        
[103] R6_2.5.1               promises_1.2.0.1       gridExtra_2.3          janeaustenr_1.0.0      lexicon_1.2.1          MASS_7.3-57           
[109] assertthat_0.2.1       withr_2.5.0            parallel_4.2.1         hms_1.1.2              quadprog_1.5-8         grid_4.2.1            
[115] rmarkdown_2.17         googledrive_2.0.0      scatterplot3d_0.3-42   shiny_1.7.3            lubridate_1.8.0        FactoMineR_2.6        

—>

LS0tCnRpdGxlOiAiRUlTVCBNYXBwaW5nIDIwMjI6IEZpZWxkIE1hcHBpbmcgb2YgS25vd2xlZGdlIFN0cnVjdHVyZSIKYXV0aG9yOiAiRGFuaWVsIFMuIEhhaW4iCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogZmxhdGx5CiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGRmX3ByaW50OiBwYWdlZAogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlCiAgICB0b2M6IGZhbHNlCiAgICB0b2NfZGVwdGg6IDMKICAgIHRvY19mbG9hdDoKICAgICAgY29sbGFwc2VkOiBmYWxzZQpwYXJhbXM6CiAgICBpbnN0aXR1dGU6IAogICAgICAgdmFsdWU6IG51bGwKICAgIGRlcGFydG1lbnQ6CiAgICAgICB2YWx1ZTogbnVsbAotLS0KCjwhLS0tCiMgQWRkIHRvIFlBTUwgd2hlbiBjb21waWxpbmcgaHRtbCAtLTwgd2hlbiByZXZpZXdpbmcgY2hhbmdlIGZpcnN0IGxpbmUgdG86IGh0bWxfbm90ZWJvb2sKICBodG1sX2RvY3VtZW50OgogICAgdGhlbWU6IGZsYXRseQogICAgY29kZV9mb2xkaW5nOiBoaWRlCiAgICBkZl9wcmludDogcGFnZWQKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogICAgdG9jOiBmYWxzZQogICAgdG9jX2RlcHRoOiAzCiAgICB0b2NfZmxvYXQ6CiAgICAgIGNvbGxhcHNlZDogZmFsc2UKCiMgQWRkIHdoZW4gY29tcGlsaW5nIHBkZgojIEFkZCB0byBZQU1MIHdoZW4gY29tcGlsaW5nIGh0bWwKICAgYm9va2Rvd246OnBkZl9kb2N1bWVudDI6IAogICAgZmlnX2NhcHRpb246IHRydWUKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogICAgZ2xvYmFsX251bWJlcmluZzogdHJ1ZQotLS0+CgoKYGBgez1odG1sfQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoubWFpbi1jb250YWluZXIgewogIG1heC13aWR0aDogMTIwMHB4OwogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKfQo8L3N0eWxlPgpgYGAKCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQojIyMgR2VuZXJpYyBwcmVhbWJsZQojcm0obGlzdD1scygpKQpTeXMuc2V0ZW52KExBTkcgPSAiZW4iKQpvcHRpb25zKHNjaXBlbiA9IDUpCnNldC5zZWVkKDEzMzcpCgojIyMgTG9hZCBwYWNrYWdlcyAgCiMgZ2VuZXJhbApsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShtYWdyaXR0cikKbGlicmFyeSh3aWR5cikKCiMgS2libGlvICYgTlcKbGlicmFyeShiaWJsaW9tZXRyaXgpCmxpYnJhcnkodGlkeWdyYXBoKQpsaWJyYXJ5KGdncmFwaCkKCiMgTkxQCmxpYnJhcnkodGlkeXRleHQpCgojIERhdGF2aXoKbGlicmFyeShwbG90bHkpCmxpYnJhcnkoZ2dmb3JjZSkKbGlicmFyeShnZ3JlcGVsKQpsaWJyYXJ5KHBhdGNod29yaykKCiMgS25pdApsaWJyYXJ5KGtuaXRyKSAjIEZvciBkaXNwbGF5IG9mIHRoZSBtYXJrZG93bgpsaWJyYXJ5KGthYmxlRXh0cmEpICMgRm9yIHRhYmxlIHN0eWxpbmcKCiMgb3duIGZ1bmN0aW9ucwpzb3VyY2UoIi4uL2Z1bmN0aW9ucy9mdW5jdGlvbnNfYmFzaWMuUiIpCnNvdXJjZSgiLi4vZnVuY3Rpb25zL2Z1bmN0aW9uc19zdW1tYXJ5LlIiKQpzb3VyY2UoIi4uL2Z1bmN0aW9ucy8wMF9wYXJhbWV0ZXJzLlIiKQoKIyBLbml0ciBvcHRpb25zCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIAogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEZBTFNFLCAKICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGQUxTRSkKYGBgCgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTkVYVCBQQVJUICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KIyBXaGVuIGRvaW5nIGl0IGhlcmUgaW4gdGhlIG5vdGVib29rCnZhcl9pbnN0IDwtICdFSVNUJwp2YXJfZGVwdCA8LSAndjInCgojIFdoZW4gY2FsbGluZyBmcm9tIGEgaGlnaGVydCBsZXZlbCBzY3JpcHQKI3Zhcl9pbnN0IDwtIHBhcmFtcyRpbnN0aXR1dGUKI3Zhcl9kZXB0IDwtIHBhcmFtcyRkZXBhcnRtZW50CmBgYAoKIyBJbnRyb2R1Y3Rpb246IE1hcHBpbmcgb2YgYnJvYWQgcmVzZWFyY2ggZmllbGQgYXJvdW5kIGByIHZhcl9pbnN0YCBpbiBgciB2YXJfZGVwdGAKCkhlcmUgYXJlIHByZWxpbWluYXJ5IHJlc3VsdHMgb2YgdGhlIGJpYmxpb21ldHJpYyBtYXBwaW5nIG9mIEVJU1QuIEl0cyBwdXJwb3NlIGlzOgoKKiBUbyBtYXAgdGhlIGJyb2FkZXIgcmVzZWFyY2ggY29tbXVuaXR5IGFuZCBkaXN0aW5jdCByZXNlYXJjaCBmaWVsZCB0aGUgZGVwYXJ0bWVudCBjb250cmlidXRlcyB0by4KKiBJZGVudGlmeSBjb3JlIGtub3dsZWRnZSBiYXNlcywgcmVzZWFyY2ggYXJlYXMgZ3RyZW5kcyBhbmQgdG9waWNzLgoqIEhpZ2hsaWdodCB0aGUgcG9zaXRpb25pbmcgb2YgdGhlIGRlcGFydG1lbnQgd2l0aGluIHRoaXMgZHluYW1pY3MuCgpUaGUgbWV0aG9kIGZvciB0aGUgcmVzZWFyY2gtZmllbGQtbWFwcGluZyBjYW4gYmUgcmV2aWV3ZWQgaGVyZToKCltSYWthcywgTS4sICYgSGFpbiwgRC4gUy4gKDIwMTkpLiBUaGUgc3RhdGUgb2YgaW5ub3ZhdGlvbiBzeXN0ZW0gcmVzZWFyY2g6IFdoYXQgaGFwcGVucyBiZW5lYXRoIHRoZSBzdXJmYWNlPy4gUmVzZWFyY2ggUG9saWN5LCA0OCg5KSwgMTAzNzg3Ll0oaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5yZXNwb2wuMjAxOS4wNC4wMTEpCgoqKk5vdGU6KiogVGhlIGFuYWx5c2lzIGluIHRoaXMgZG9jdW1lbnQgZGVwaWN0cyB0aGUgKmxhcmdlciByZXNlYXJjaCBmaWVsZCogYXJvdW5kIHRoZSBkZXBhcnRtZW50LCB0aGVyZWJ5IGFsbCBhbmFseXNpcyByZXN1bHRzIGFyZSBiYXNlZCBvbiB0aGUgcHVibGljYXRpb25zIG9mIHRoZSBkZXBhcnRtZW50IHBsdXMgcmVsYXRlZCAKCgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTkVYVCBQQVJUICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KIyBMb2FkIGRhdGEKTSA8LSByZWFkUkRTKHBhc3RlMCgnLi4vLi4vdGVtcC9NXycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkgJT4lIGFzX3RpYmJsZSgpICU+JSAKICBkaXN0aW5jdChVVCwgLmtlZXBfYWxsID0gVFJVRSkgJT4lIAogIGZpbHRlcihQWSA+PSBQWV9taW4sIFBZIDw9IFBZX21heCkgJT4lCiAgZ3JvdXBfYnkoUFkpICU+JQogICAgbXV0YXRlKFRDX2NvaG9ydF9yYW5rID0gcGVyY2VudF9yYW5rKFRDKSkgJT4lCiAgdW5ncm91cCgpIApgYGAKCmBgYHtyfQpjb21fbGFiZWxzIDwtIHJlYWRfY3N2MignLi4vZGF0YS9jb21tdW5pdHlfbGFiZWxpbmcuY3N2JykgICU+JSBmaWx0ZXIoaW5zdGl0dXRlID09IHZhcl9pbnN0LCBkZXBhcnRtZW50ID09IHZhcl9kZXB0KSAlPiUgYXJyYW5nZShpbnN0aXR1dGUsIGRlcGFydG1lbnQsIHR5cGUsIGNvbSkgJT4lIG11dGF0ZShsYWJlbCA9IGlmZWxzZShpcy5uYShsYWJlbCksIHBhc3RlMCh0eXBlLCAnICcsIGNvbSwgJzogdW5sYWJlbGVkJyksIHBhc3RlMCh0eXBlLCAnICcsIGNvbSwgJzogJywgbGFiZWwpKSkKYGBgCgoKIyBHZW5lcmFsIE92ZXJ2aWV3IG92ZXIgdGhlIHJlc2VhcmNoIGZpZWxkCgoqKk5vdGU6KiogVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGJhc2ljIGRlc2NyaXB0aXZlcyBvZiB0aCBpZGVudGlmaWVkIHJlc2VhcmNoIGZpZWxsZCwgaW5jbHVkaW5nIG51bWJlciBvZiBhcnRpY2xlcyBvdmVyIHRpbWUsIGNvdW50cmllcywgaW5zdGl0dXRpb25zLCBhbmQgYXV0aG9ycy4gU2VlIGBUZWNobmljYWwgZGVzY3JpcHRpb25gZm9yIGFkZGl0aW9uYWwgZXhwbGFuYXRpb25zLgoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CiMgcmVzdWx0cyA8LSBiaWJsaW9BbmFseXNpcyhNLCBzZXAgPSAiOyIpCnJlc3VsdHMgPC0gcmVhZF9yZHMocGFzdGUwKCcuLi8uLi90ZW1wL01fcmVzXycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkKYGBgCgojIyBNYWluIEluZGljYXRvcnM6IFB1YmxpY2F0aW9ucywgQXV0aG9ycywgQ291bnRyaWVzIAoKYGBge3J9CiNyZXN1bHRzICU+JSBwbG90KGsgPSAxMCwgcGF1c2UgPSBGQUxTRSkKYGBgCgpgYGB7cn0KcHJvZF9BVSA8LSBNICU+JSBhdXRob3JQcm9kT3ZlclRpbWUoayA9IDEwLCBncmFwaCA9IFRSVUUpCiNwbG90KHByb2RfQVUkZ3JhcGgpCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CnJtKHJlc3VsdHMsIHByb2RfQVUpCmBgYAoKIyMgQ29ubmVjdGlvbiBiZXR3ZWVuIHRoZSByZXNlYXJjaCBmaWVsZCdzIFRvcCBBdXRob3JzLUtleXdvcmRzLUpvdXJuYWxzCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KTV90aHJlZWZpZWxkIDwtIHJlYWRSRFMocGFzdGUwKCcuLi8uLi90ZW1wL3RocmVlZmllbGRfJywgc3RyX3RvX2xvd2VyKHZhcl9pbnN0KSwgJ18nLCBzdHJfdG9fbG93ZXIodmFyX2RlcHQpLCAnLnJkcycpKSAKYGBgCgpgYGB7ciwgZmlnLndpZHRoPTE3LjUsIGZpZy5oZWlnaHQ9MTcuNX0KTV90aHJlZWZpZWxkCmBgYAoKIyBUb3BpYyBtb2RlbGxpbmcgCgoqKk5vdGU6KiogSGVyZSwgd2UgcmVwb3J0IHRoZSByZXN1bHRzIG9mIGEgTERBIHRvcGljLW1vZGVsbGluZyAoYmFzaWNhbGx5LCBjbHVzdGVyaW5nIG9uIHdvcmRzKSBvbiBhbGwgdGl0bGUrYWJzdHJhY3QgdGV4dHMuIElkZW50aWZpZWQgdG9waWNzIGNhbiBiZSBpbnRlcnByZXRlZCBhcyBicm9hZCB0aGVtZXMgaW4gdGhlIHJlc2VhcmNoIGZpZWxkLiBTZWUgYFRlY2huaWNhbCBkZXNjcmlwdGlvbmBmb3IgYWRkaXRpb25hbCBleHBsYW5hdGlvbnMuCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KdGV4dF90aWR5IDwtIHJlYWRSRFMocGFzdGUwKCcuLi8uLi90ZW1wL3RleHRfdGlkeV8nLCBzdHJfdG9fbG93ZXIodmFyX2luc3QpLCAnXycsIHN0cl90b19sb3dlcih2YXJfZGVwdCksICcucmRzJykpCnRleHRfbGRhIDwtIHJlYWRSRFMocGFzdGUwKCcuLi8uLi90ZW1wL3RleHRfTERBXycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkgCgp0ZXh0X2xkYV9iZXRhIDwtIHRleHRfbGRhICU+JSB0aWR5KG1hdHJpeCA9ICJiZXRhIikgCnRleHRfbGRhX2dhbW1hIDwtIHRleHRfbGRhICU+JSB0aWR5KG1hdHJpeCA9ICJnYW1tYSIpCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CmNvbV9uYW1lc190b3AgPC0gdGliYmxlKCAKICBjb20gPSAxOih0ZXh0X2xkYV9nYW1tYSAlPiUgcHVsbCh0b3BpYykgJT4lIG5fZGlzdGluY3QoKSksCiAgdHlwZSA9ICdUUCcsCiAgY29sID0gY29tICU+JSBnZ19jb2xvcl9zZWxlY3QocGFsID0gcGFsX3RwKSkgJT4lCiAgbGVmdF9qb2luKGNvbV9sYWJlbHMgJT4lIGZpbHRlcih0eXBlID09ICdUUCcpICU+JSBzZWxlY3QoY29tLCBsYWJlbCksIGJ5ID0gJ2NvbScpICU+JQogIG11dGF0ZShsYWJlbCA9IGlmZWxzZShpcy5uYShsYWJlbCksIHBhc3RlMCgnVFAgJywgY29tLCAnOiB1bmxhYmVsZWQnKSwgbGFiZWwpKQogICAgICAgICAgICAKIyAjIDFzdCBhbHRlcm5hdGl2ZTogTnVtYmVyIHRoZW0gMS1uCiMgcGFzdGUodHlwZSwgMToodGV4dF9sZGFfZ2FtbWEgJT4lIHB1bGwodG9waWMpICU+JSBuX2Rpc3RpbmN0KCkpKSAgICAgICAgICAgCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CnRleHRfbGRhX2JldGEgJTw+JSAgaW5uZXJfam9pbihjb21fbmFtZXNfdG9wICU+JSBzZWxlY3QoY29tLCBsYWJlbCwgY29sKSwgYnkgPSBjKCd0b3BpYycgPSAnY29tJykpCnRleHRfbGRhX2dhbW1hICU8PiUgaW5uZXJfam9pbihjb21fbmFtZXNfdG9wICU+JSBzZWxlY3QoY29tLCBsYWJlbCwgY29sKSwgYnkgPSBjKCd0b3BpYycgPSAnY29tJykpCmBgYAoKCiMjIFRvcGljcyBieSB0b3B3b3JkcwoKYGBge3IsIGZpZy53aWR0aD0xNSwgZmlnLmhlaWdodD0xNX0gCnRleHRfbGRhX2JldGEgJT4lCiAgZ3JvdXBfYnkobGFiZWwpICU+JQogIHNsaWNlX21heChiZXRhLCBuID0gMTApICU+JQogIHVuZ3JvdXAoKSAlPiUKICBtdXRhdGUodGVybSA9IHJlb3JkZXJfd2l0aGluKHRlcm0sIGJldGEsIGxhYmVsKSkgJT4lCiAgZ2dwbG90KGFlcyh0ZXJtLCBiZXRhLCBmaWxsID0gZmFjdG9yKGxhYmVsKSkpICsKICBnZW9tX2NvbChzaG93LmxlZ2VuZCA9IEZBTFNFKSArCiAgZmFjZXRfd3JhcCh+IGxhYmVsLCBzY2FsZXMgPSAiZnJlZSIsIG5jb2wgPSAzKSArCiAgY29vcmRfZmxpcCgpICsKICBzY2FsZV94X3Jlb3JkZXJlZCgpICsKICBsYWJzKHggPSAiSW50cmEtdG9waWMgZGlzdHJpYnV0aW9uIG9mIHdvcmQiLAogICAgICAgeSA9ICJXb3JkcyBpbiB0b3BpYyIpICsgCiAgc2NhbGVfZmlsbF9tYW51YWwobmFtZSA9ICJMZWdlbmQiLCB2YWx1ZXMgPSBjb21fbmFtZXNfdG9wICU+JSBwdWxsKGNvbCkpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAnYm90dG9tJykKCiNwbG90X2x5IDwtIHBsb3QgJT4lIHBsb3RseTo6Z2dwbG90bHkoKQojaHRtbHdpZGdldHM6OnNhdmVXaWRnZXQocGxvdGx5Ojphc193aWRnZXQocGxvdF9seSksICcuLi9vdXRwdXRcdmlzX3Bsb3RseV90b3BpY190ZXJtcy5odG1sJywgc2VsZmNvbnRhaW5lZCA9IFRSVUUpCmBgYAoKKipOb3RlOioqIFdoaWxlIHRoaXMgc3RhdGljIHZpZXMgaXMgaGVscGZ1bCwgSSByZWNvbW1lbmQgdXNpbmcgdGhlIGludGVyYWN0aXZlIExEQVZpcyB2ZXJzaW9uIHRvIGJlIGZvdW5kIHVuZGVyIGByIHBhc3RlMCgnaHR0cHM6Ly9kYW5pZWwtaGFpbi5naXRodWIuaW8vYmlibGlvX2x1eF8yMDIyL291dHB1dC90b3BpY19tb2RlbGxpbmcvTERBdml6XycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy9pbmRleC5odG1sI3RvcGljPTEmbGFtYmRhPTAuNjAmdGVybT0nKWAuIEZvciBmdW5jdGlvbmFsaXR5IGFuZCB1c2FnZSwgc2VlIMK0VGVjaG5pY2FsIMK0LgoKYGBge3IsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0PTcuNX0KdGV4dF9sZGFfZ2FtbWEgJT4lCiAgcmVuYW1lKHdlaWdodCA9IGdhbW1hKSAlPiUKICBsZWZ0X2pvaW4oTSAlPiUgc2VsZWN0KFVULCBQWSksIGJ5ID0gYygnZG9jdW1lbnQnID0gJ1VUJykpICU+JQogIG11dGF0ZShQWSA9IGFzLm51bWVyaWMoUFkpKSAlPiUKICBncm91cF9ieShQWSwgbGFiZWwpICU+JSBzdW1tYXJpc2Uod2VpZ2h0ID0gc3VtKHdlaWdodCkpICU+JSB1bmdyb3VwKCkgJT4lCiAgZ3JvdXBfYnkoUFkpICU+JSBtdXRhdGUod2VpZ2h0X1BZID0gc3VtKHdlaWdodCkpICU+JSB1bmdyb3VwKCkgJT4lCiAgbXV0YXRlKHdlaWdodF9yZWwgPSB3ZWlnaHQgLyB3ZWlnaHRfUFkpICU+JQogIHNlbGVjdChQWSwgbGFiZWwsIHdlaWdodCwgd2VpZ2h0X3JlbCkgJT4lCiAgZmlsdGVyKFBZID49IFBZX21pbiAmIFBZIDw9IFBZX21heCkgJT4lCiAgYXJyYW5nZShQWSwgbGFiZWwpICU+JQogIHBsb3Rfc3VtbWFyeV90aW1lbGluZSh5MSA9IHdlaWdodCwgeTIgPSB3ZWlnaHRfcmVsLCB0ID0gUFksIHRfbWluID0gUFlfbWluLCB0X21heCA9IFBZX21heCwgYnkgPSBsYWJlbCwgIGxhYmVsID0gVFJVRSwgcGFsID0gcGFsX3RwLCAKICAgICAgICAgICAgICAgICAgICAgICAgeTFfdGV4dCA9ICJUb3BpYyBwb3B1bGFyaXR5IGFubnVhbHkiLCB5Ml90ZXh0ID0gIlNoYXJlIG9mIHRvcGljIGFubnVhbGx5IikgKwogIHBsb3RfYW5ub3RhdGlvbih0aXRsZSA9IHBhc3RlKCdUb3BpYyBNb2RlbGxpbmc6JywgdmFyX2luc3QsICdGaWVsZCBhcm91bmQgRGVwdC4nLCB2YXJfZGVwdCwgc2VwID0gJyAnKSwKICAgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBwYXN0ZSgnVGltZWZyYW1lOicsIFBZX21pbiwgJy0nLCBQWV9tYXggLCBzZXAgPSAnICcpLAogICAgICAgICAgICAgICAgICBjYXB0aW9uID0gJ0Fic29sdXRlIHRvcGljIGFwcGVhcmFuY2UgKGxlZnQpLCBSZWxhdGl2ZSB0b3BpYyBhcHBlYXJhbmNlIChyaWdodCknKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodD03LjV9CnRleHRfbGRhX2dhbW1hICU+JQogIHJlbmFtZSh3ZWlnaHQgPSBnYW1tYSkgJT4lCiAgaW5uZXJfam9pbihNICU+JSBzZWxlY3QoVVQsIFBZLCBUQ19jb2hvcnRfcmFuaykgJT4lCiAgICAgICAgICAgICAgZmlsdGVyKGludF9kZXB0ID0gVFJVRSksIGJ5ID0gYygnZG9jdW1lbnQnID0gJ1VUJykpICU+JQogICMgbXV0YXRlKGltcGFjdCA9IHdlaWdodCogVENfY29ob3J0X3JhbmspICU+JQogIG11dGF0ZShpbXBhY3QgPSBUQ19jb2hvcnRfcmFuayA+PSAwLjkpICU+JQogIGdyb3VwX2J5KFBZKSAlPiUKICBmaWx0ZXIocGVyY2VudF9yYW5rKHdlaWdodCkgPj0gMC41KSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgZ3JvdXBfYnkobGFiZWwsIFBZKSAlPiUKICBzdW1tYXJpc2UoaW1wYWN0ID0gbWVhbihpbXBhY3QpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBQWSwgeSA9IGltcGFjdCwgY29sID0gbGFiZWwpKSArCiAgZ2VvbV9saW5lKCkgKyAKICBnZW9tX3BvaW50KCkgKyAKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAnYm90dG9tJykgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgnVG9waWMgSW1wYWN0OicsIHZhcl9pbnN0LCAnRmllbGQgYXJvdW5kIERlcHQuJywgdmFyX2RlcHQsIHNlcCA9ICcgJyksCiAgICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gcGFzdGUoJ1RpbWVmcmFtZTonLCBQWV9taW4sICctJywgUFlfbWF4ICwgc2VwID0gJyAnKSwKICAgICAgICAgICAgICAgICAgeCA9ICdZZWFyJywKICAgICAgICAgICAgICAgICAgeSA9ICdUb3BpYyBJbXBhY3QnLAogICAgICAgICAgICAgICAgICBjYXB0aW9uID0gJ1RvcGljIEltcGFjdCByZWZlcnMgdG8gdGhlIHNoYXJlIG9mIHB1YmxpY2F0aW9ucyB3aXRoaW4gdGhlIGNvaG9ydCB0b3AtMTAlIGNpdGVkIHB1YmxpY2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHRvcGljJywKICAgICAgICAgICAgICAgICAgKQpgYGAKCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBORVhUIFBBUlQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0Kcm0odGV4dF90aWR5LCB0ZXh0X2xkYSkKYGBgCgojIEtub3dsZWRnZSBCYXNlczogQ28tQ2l0YXRpb24gbmV0d29yayBhbmFseXNpcyAKCioqTm90ZToqKiBUaGlzIGFuYWx5c2lzIHJlZmVycyB0aGUgY28tY2l0YXRpb24gYW5hbHlzaXMsIHdoZXJlIHRoZSBjaXRlZCByZWZlcmVuY2VzIGFuZCBub3QgdGhlIG9yaWdpbmFsIHB1YmxpY2F0aW9ucyBhcmUgdGhlIHVuaXQgb2YgYW5hbHlzaXMuIElkZW50aWZpZWQga25vd2xlZGdlIGJhc2VzIGNhbiBiZSBpbnRlcnByZXRlZCBhcyB0aGUga25vd2xlZGdlIGZvdW5kYXRpb24gdGhlIGZpZWxkIGRyYXdzIGZyb20uIFNlZSBgVGVjaG5pY2FsIGRlc2NyaXB0aW9uYGZvciBhZGRpdGlvbmFsIGV4cGxhbmF0aW9ucy4KCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQpDX253IDwtIHJlYWRSRFMocGFzdGUwKCcuLi8uLi90ZW1wL0NfbndfJywgc3RyX3RvX2xvd2VyKHZhcl9pbnN0KSwgJ18nLCBzdHJfdG9fbG93ZXIodmFyX2RlcHQpLCAnLnJkcycpKSAgJT4lCiAgZHJvcF9uYShjb20pCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CmNvbV9uYW1lc19jaXQgPC0gdGliYmxlKCAKICBjb20gPSAxOihDX253ICU+JSBwdWxsKGNvbSkgJT4lIG5fZGlzdGluY3QoKSksCiAgdHlwZSA9ICdLQicsCiAgY29sID0gY29tICU+JSBnZ19jb2xvcl9zZWxlY3QocGFsID0gcGFsX2tiKSkgJT4lCiAgbGVmdF9qb2luKGNvbV9sYWJlbHMgJT4lIGZpbHRlcih0eXBlID09ICdLQicpICU+JSBzZWxlY3QoY29tLCBsYWJlbCksIGJ5ID0gJ2NvbScpICU+JQogIG11dGF0ZShsYWJlbCA9IGlmZWxzZShpcy5uYShsYWJlbCksIHBhc3RlMCgnS0IgJywgY29tLCAnOiB1bmxhYmVsZWQnKSwgbGFiZWwpKQoKIyAjIDFzdCBhbHRlcm5hdGl2ZTogTnVtYmVyIHRoZW0gMS1uCiMgcGFzdGUodHlwZSwgMTooQ19udyAlPiUgcHVsbChjb20pICU+JSBuX2Rpc3RpbmN0KCkpKQpgYGAKCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQpDX253ICU8PiUgbGVmdF9qb2luKGNvbV9uYW1lc19jaXQgJT4lIHNlbGVjdChjb20sIGxhYmVsLCBjb2wpLCBieSA9ICJjb20iKQpgYGAKCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQprYl9zdGF0cyA8LSBDX253ICU+JQogIGdyb3VwX2J5KGxhYmVsKSAlPiUKICBzdW1tYXJpc2UobiA9IG4oKSwgZGVuc2l0eV9pbnQgPSAoKHN1bShkZ3JfaW50KSAvIChuKCkgKiAobigpIC0gMSkpKSAqIDEwMCkgJT4lIHJvdW5kKDMpKSAlPiUKICByZWxvY2F0ZShsYWJlbCwgZXZlcnl0aGluZygpKQpgYGAKCmBgYHtyfQprYl9zdW0gPC1DX253ICU+JSBncm91cF9ieShjb20pICU+JSAKICBhcnJhbmdlKGNvbSwgZGVzYyhkZ3JfaW50KSkgJT4lCiAgbXV0YXRlKG5hbWUgPSBuYW1lICU+JSBzdHJfdHJ1bmMoMTUwKSkgJT4lCiAgc2xpY2VfbWF4KG9yZGVyX2J5ID0gZGdyX2ludCwgbiA9IDEwLCB3aXRoX3RpZXMgPSBGQUxTRSkgJT4lIAogIHVuZ3JvdXAoKSAlPiUKICBzZWxlY3QoIG5hbWUsIGRncl9pbnQsIGRncikgJT4lCiAga2FibGUoKSAKCmZvcihpIGluIDE6bnJvdyhjb21fbmFtZXNfY2l0KSl7CiAga2Jfc3VtIDwtIGtiX3N1bSAlPiUKICAgIHBhY2tfcm93cyhwYXN0ZTAoJ0tub3dsZWRnZSBCYXNlICcsIGksICc6ICcsIGNvbV9uYW1lc19jaXRbaSwgJ2xhYmVsJ10sCiAgICAgICAgICAgICAgICAgICAgICcgICAobiA9ICcsIGtiX3N0YXRzW2ksICduJ10sICcsIGRlbnNpdHkgPScsIGtiX3N0YXRzW2ksICdkZW5zaXR5X2ludCddICU+JSByb3VuZCgyKSwgJyknICksIAogICAgICAgICAgICAgIChpKjEwLTkpLCAgKGkqMTApLCBsYWJlbF9yb3dfY3NzID0gImJhY2tncm91bmQtY29sb3I6ICM2NjY7IGNvbG9yOiAjZmZmOyIpIAogIH0KCmtiX3N1bSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLCBmb250X3NpemUgPSAxMCkKYGBgCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KZWxfMm0gPC0gcmVhZFJEUyhwYXN0ZTAoJy4uLy4uL3RlbXAvZWxfMm1fJywgc3RyX3RvX2xvd2VyKHZhcl9pbnN0KSwgJ18nLCBzdHJfdG9fbG93ZXIodmFyX2RlcHQpLCAnLnJkcycpKSAlPiUKICBkcm9wX25hKCkKYGBgCgoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CmNpdF9jb21feWVhciA8LSBlbF8ybSAlPiUKICBjb3VudChjb21fY2l0LCBQWSwgbmFtZSA9ICdUQycpICU+JQogIGdyb3VwX2J5KFBZKSAlPiUKICBtdXRhdGUoVENfcmVsID0gVEMgLyBzdW0oVEMpKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgYXJyYW5nZShQWSwgY29tX2NpdCkgJT4lCiAgbGVmdF9qb2luKGNvbV9uYW1lc19jaXQgLCBieSA9IGMoJ2NvbV9jaXQnID0gJ2NvbScpKSAlPiUgCiAgY29tcGxldGUobGFiZWwsIFBZLCBmaWxsID0gbGlzdChUQyA9IDAsIFRDX3JlbCA9IDApKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodD03LjV9CmNpdF9jb21feWVhciAlPiUKICBwbG90X3N1bW1hcnlfdGltZWxpbmUoeTEgPSBUQywgeTIgPSBUQ19yZWwsIHQgPSBQWSwgdF9taW4gPSBQWV9taW4sIHRfbWF4ID0gUFlfbWF4LCBieSA9IGxhYmVsLCBwYWwgPSBwYWxfa2IsIGxhYmVsID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgeTFfdGV4dCA9ICJOdW1iZXIgY2l0YXRpb25zIHJlY2lldmVkIGFubnVhbGx5IiwgIHkyX3RleHQgPSAiU2hhcmUgb2YgY2l0YXRpb25zIHJlY2lldmVkIGFubnVhbGx5IikgKwogIHBsb3RfYW5ub3RhdGlvbih0aXRsZSA9IHBhc3RlKCdLbm93bGVkZ2UgQnNlczonLCB2YXJfaW5zdCwgJ0ZpZWxkIGFyb3VuZCBEZXB0LicsIHZhcl9kZXB0LCBzZXAgPSAnICcpLAogICAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IHBhc3RlKCdUaW1lZnJhbWU6JywgUFlfbWluLCAnLScsIFBZX21heCAsIHNlcCA9ICcgJyksCiAgICAgICAgICAgICAgICAgIGNhcHRpb24gPSAnQWJzb2x1dGUga25vd2xlZGdlIGJhc2UgYXBwZWFyYW5jZSAobGVmdCksIFJlbGF0aXZlIGtub3dsZWRnZSBiYXNlIGFwcGVhcmFuY2UgKHJpZ2h0KScpCmBgYAoKPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIE5FWFQgUEFSVCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgoKIyBSZXNlYXJjaCBBcmVhczogQmlibGlvZ3JhcGhpYyBjb3VwbGluZyBhbmFseXNpcwoKKipOb3RlOioqIFRoaXMgYW5hbHlzaXMgcmVmZXJzIHRoZSBiaWJsaW9ncmFwaGljIGNvdXBsaW5nIGFuYWx5c2lzLCB3aGVyZSBvcmlnaW5hbCBwdWJsaWNhdGlvbnMgYXJlIHRoZSB1bml0IG9mIGFuYWx5c2lzLiBJZGVudGlmaWVkIHJlc2VhcmNoIGFyZWFzIGNhbiBiZSBpbnRlcnByZXRlZCBhcyB0aGUgZmllbGQncyBjdXJyZW50IHJlc2VhcmNoIGZyb250aWVyLiBTZWUgYFRlY2huaWNhbCBkZXNjcmlwdGlvbmBmb3IgYWRkaXRpb25hbCBleHBsYW5hdGlvbnMuCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KTV9iaWIgPC0gcmVhZFJEUyhwYXN0ZTAoJy4uLy4uL3RlbXAvTV9iaWJfJywgc3RyX3RvX2xvd2VyKHZhcl9pbnN0KSwgJ18nLCBzdHJfdG9fbG93ZXIodmFyX2RlcHQpLCAnLnJkcycpKSAlPiUgCiAgYXNfdGliYmxlKCkgJT4lCiAgZHJvcF9uYShjb20pCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CmNvbV9uYW1lc19iaWIgPC0gdGliYmxlKCAKICBjb20gPSAxOihNX2JpYiAlPiUgcHVsbChjb20pICU+JSBuX2Rpc3RpbmN0KCkpLAogIHR5cGUgPSAnUkEnLAogIGNvbCA9IGNvbSAlPiUgZ2dfY29sb3Jfc2VsZWN0KHBhbCA9IHBhbF9yYSkpICU+JQogIGxlZnRfam9pbihjb21fbGFiZWxzICU+JSBmaWx0ZXIodHlwZSA9PSAnUkEnKSAlPiUgc2VsZWN0KGNvbSwgbGFiZWwpLCBieSA9ICdjb20nKSAlPiUKICBtdXRhdGUobGFiZWwgPSBpZmVsc2UoaXMubmEobGFiZWwpLCBwYXN0ZTAoJ1JBICcsIGNvbSwgJzogdW5sYWJlbGVkJyksIGxhYmVsKSkKCiMgIyAxc3QgYWx0ZXJuYXRpdmU6IE51bWJlciB0aGVtIDEtbgojIHBhc3RlKHR5cGUsIDE6KE1fYmliICU+JSBwdWxsKGNvbSkgJT4lIG5fZGlzdGluY3QoKSkpCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9Ck1fYmliICU8PiUgbGVmdF9qb2luKGNvbV9uYW1lc19iaWIgJT4lIHNlbGVjdChjb20sIGxhYmVsLCBjb2wpLCBieSA9ICJjb20iKQpgYGAKCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQpyYV9zdGF0cyA8LSBNX2JpYiAlPiUKICBkcm9wX25hKGNvbSkgJT4lCiAgZ3JvdXBfYnkoY29tLCBsYWJlbCkgJT4lCiAgc3VtbWFyaXNlKG4gPSBuKCksIGRlbnNpdHlfaW50ID0gKChzdW0oZGdyX2ludCkgLyAobigpICogKG4oKSAtIDEpKSkgKiAxMDApICU+JSByb3VuZCgzKSkgJT4lCiAgc2VsZWN0KGNvbSwgbGFiZWwsIGV2ZXJ5dGhpbmcoKSkKYGBgCgpgYGB7cn0KcmFfc3VtIDwtIE1fYmliICU+JSAKICBsZWZ0X2pvaW4oTSAlPiUgc2VsZWN0KFVULCBBVSwgUFksIFRJLCBUQyksIGJ5ID0gJ1VUJykgJT4lCiAgZ3JvdXBfYnkobGFiZWwpICU+JSAKICBtdXRhdGUoZGdyX3NlbGVjdCA9IChkZ3JfaW50IC8gbWF4KGRncl9pbnQpICogKFRDIC8gbWF4KFRDKSkpICkgJT4lCiAgc2xpY2VfbWF4KG9yZGVyX2J5ID0gZGdyX3NlbGVjdCwgbiA9IDEwLCB3aXRoX3RpZXMgPSBGQUxTRSkgJT4lIAogIG11dGF0ZShUQ195ZWFyID0gKFRDIC8gKDIwMjEgKyAxIC0gUFkpKSAlPiUgcm91bmQoMiksCiAgICAgICAgIGRncl9pbnQgPSBkZ3JfaW50ICU+JSByb3VuZCgyKSwKICAgICAgICAgQVUgPSBBVSAlPiUgc3RyX3RydW5jKDI1KSwKICAgICAgICAgVEkgPSBUSSAlPiUgc3RyX3RydW5jKDEyNSkpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBzZWxlY3QoQVUsIFBZLCBUSSwgZGdyX2ludCwgVEMsIFRDX3llYXIpICU+JQogIGthYmxlKCkKCgpmb3IoaSBpbiAxOm5yb3coY29tX25hbWVzX2JpYikpewogIHJhX3N1bSAgJTw+JQogICAgcGFja19yb3dzKHBhc3RlMCgnUmVzZWFyY2ggQXJlYSAnLCBpLCAnOiAnLCBjb21fbmFtZXNfYmliW2ksICdsYWJlbCddLAogICAgICAgICAgICAgICAgICAgICAnICAgKG4gPSAnLCByYV9zdGF0c1tpLCAnbiddLCAnLCBkZW5zaXR5ID0nLCByYV9zdGF0c1tpLCAnZGVuc2l0eV9pbnQnXSAlPiUgcm91bmQoMiksICcpJyApLCAKICAgICAgICAgICAgICAoaSoxMC05KSwgIChpKjEwKSwgbGFiZWxfcm93X2NzcyA9ICJiYWNrZ3JvdW5kLWNvbG9yOiAjNjY2OyBjb2xvcjogI2ZmZjsiKSAKICB9CgpyYV9zdW0gJT4lIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIiksIGZvbnRfc2l6ZSA9IDEwKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodD03LjV9Ck1fYmliICU+JQogIGxlZnRfam9pbihNICU+JSBzZWxlY3QoWFgsIFBZKSwgYnkgPSAnWFgnKSAlPiUKICBtdXRhdGUoUFkgPSBQWSAlPiUgYXMubnVtZXJpYygpKSAlPiUKICBncm91cF9ieShsYWJlbCwgUFkpICU+JSBzdW1tYXJpc2UobiA9IG4oKSkgJT4lIHVuZ3JvdXAoKSAlPiUKICBncm91cF9ieShQWSkgJT4lIG11dGF0ZShuX1BZID0gc3VtKG4pKSAlPiUgdW5ncm91cCgpICU+JQogIG11dGF0ZShuX3JlbCA9IG4gLyBuX1BZKSAlPiUKICBzZWxlY3QobGFiZWwsIFBZLCBuLCBuX3JlbCkgJT4lCiAgYXJyYW5nZShsYWJlbCwgUFkpICU+JSAKICBjb21wbGV0ZShsYWJlbCwgUFksIGZpbGwgPSBsaXN0KG4gPSAwLCBuX3JlbCA9IDApKSAlPiUKICBwbG90X3N1bW1hcnlfdGltZWxpbmUoeTEgPSBuLCB5MiA9IG5fcmVsLCB0ID0gUFksIHRfbWluID0gUFlfbWluLCB0X21heCA9IFBZX21heCwgYnkgPSBsYWJlbCwgbGFiZWwgPSBUUlVFLCBwYWwgPSBwYWxfcmEsCiAgICAgICAgICAgICAgICAgICAgICAgIHkxX3RleHQgPSAiTnVtYmVyIHB1YmxpY2F0aW9ucyBhbm51YWxseSIsIHkyX3RleHQgPSAiU2hhcmUgb2YgcHVibGljYXRpb25zIGFubnVhbGx5IikgKwogIHBsb3RfYW5ub3RhdGlvbih0aXRsZSA9IHBhc3RlKCdSZXNlYXJjaCBBcmVhczonLCB2YXJfaW5zdCwgJ0ZpZWxkIGFyb3VuZCBEZXB0LicsIHZhcl9kZXB0LCBzZXAgPSAnICcpLAogICAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IHBhc3RlKCdUaW1lZnJhbWU6JywgUFlfbWluLCAnLScsIFBZX21heCAsIHNlcCA9ICcgJyksCiAgICAgICAgICAgICAgICAgIGNhcHRpb24gPSAnQWJzb2x1dGUgcmVzZWFyY2ggYXJlYSBhcHBlYXJhbmNlIChsZWZ0KSwgUmVsYXRpdmUgcmVzZWFyY2ggYXJlYSBhcHBlYXJhbmNlIChyaWdodCknKQpgYGAKCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KZ19hZ2cgPC0gcmVhZFJEUyhwYXN0ZTAoJy4uLy4uL3RlbXAvZ19iaWJfYWdnXycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkgJU4+JQogIGFycmFuZ2UoY29tKSAjICU+JQojICAgbXV0YXRlKG5hbWUgPSBuYW1lc19yYSAlPiUgcHVsbChjb21fcmFfbmFtZSksCiMgICAgICAgICAgY29sb3IgPSBjb2xzX3JhKQpgYGAKCmBgYHtyLCBmaWcuaGVpZ2h0PSA3LjUsIGZpZy53aWR0aD03LjV9CmdfYWdnICVFPiUgCiAgZmlsdGVyKHdlaWdodCA+IDAgJiBmcm9tICE9IHRvKSAlPiUKICBmaWx0ZXIod2VpZ2h0ID49IHF1YW50aWxlKHdlaWdodCwgMC4yNSkgKSAgJU4+JQogIG11dGF0ZShjb20gPSBjb21fbmFtZXNfYmliICU+JSBwdWxsKGxhYmVsKSkgJT4lCiAgZ2dyYXBoKGxheW91dCA9ICJjaXJjbGUiKSArIAogIGdlb21fZWRnZV9mYW4oc3RyZW5naHQgPSAwLjgsIGFlcyh3aWR0aCA9IHdlaWdodCksIGFscGhhID0gMC4yKSAgKyAKICBnZW9tX25vZGVfcG9pbnQoYWVzKHNpemUgPSBOLCBjb2xvciA9IGNvbSkpICArIAogIGdlb21fbm9kZV90ZXh0KGFlcyhsYWJlbCA9IGNvbSksIHJlcGVsID0gVFJVRSkgKwogICN0aGVtZV9ncmFwaChiYXNlX2ZhbWlseSA9ICJBcmlhbCIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAnYm90dG9tJykgKwogIHNjYWxlX3NpemUocmFuZ2UgPSBjKDIsMjApKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSBwYWxfcmEpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoJ1Jlc2VhcmNoIEFyZWEgQ29ubmVjdGl2aXR5OicsIHZhcl9pbnN0LCAnRmllbGQgYXJvdW5kIERlcHQuJywgdmFyX2RlcHQsIHNlcCA9ICcgJyksCiAgICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gcGFzdGUoJ1RpbWVmcmFtZTonLCBQWV9taW4sICctJywgUFlfbWF4ICwgc2VwID0gJyAnKSwKICAgICAgICAgICAgICAgICAgY2FwdGlvbiA9ICdOb2RlcyA9IElkZW50aWZpZWQgUmVzZWFyY2ggQXJlYXM7IEVkZ2VzOiBCaWJsaW9ncmFwaGljIGNvdXBsaW5nIHN0cmVuZ2h0IChKYWNjYXJkIHdlaWdodGVkKScpCmBgYAoKCiMgS25vd2xlZGdlIEJhc2VzLCBSZXNlYXJjaCBBcmVhcyAmIFRvcGljcyBJbnRlcmFjdGlvbgoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CiMgTm9kZXMKbmxfM20gPC0gY29tX25hbWVzX2JpYiAlPiUKICBiaW5kX3Jvd3MoY29tX25hbWVzX2NpdCkgJT4lCiAgYmluZF9yb3dzKGNvbV9uYW1lc190b3ApICU+JQogIHJlbmFtZShuYW1lID0gbGFiZWwsCiAgICAgICAgIGNvbV9uciA9IGNvbSkgJT4lCiAgcmVsb2NhdGUobmFtZSkKCiMgRWRnZXMKZWxfMm1fa2IgPC0gZWxfMm0gJT4lCiAgc2VsZWN0KC1mcm9tLCAtdG8pICU+JQogIGlubmVyX2pvaW4oY29tX25hbWVzX2NpdCAlPiUgc2VsZWN0KGNvbSwgbGFiZWwpLCBieSA9IGMoJ2NvbV9jaXQnID0gJ2NvbScpKSAlPiUKICBpbm5lcl9qb2luKGNvbV9uYW1lc19iaWIgJT4lIHNlbGVjdChjb20sIGxhYmVsLCBjb2wpLCBieSA9IGMoJ2NvbV9iaWInID0gJ2NvbScpKSAlPiUKICBtdXRhdGUod2VpZ2h0ID0gMSkgJT4lCiAgcmVuYW1lKGZyb20gPSBsYWJlbC54LAogICAgICAgICB0byA9IGxhYmVsLnkpICU+JSAjIGdlbmVyaWMKICBzZWxlY3QoZnJvbSwgdG8sIHdlaWdodCwgY29sKSAlPiUgCiAgZHJvcF9uYSgpICU+JSAKICBjb3VudChmcm9tLCB0bywgY29sLCB3dCA9IHdlaWdodCwgbmFtZSA9ICd3ZWlnaHQnKSAlPiUKICBmaWx0ZXIocGVyY2VudF9yYW5rKHdlaWdodCkgPj0gMC4yNSkgJT4lCiAgd2VpZ2h0X2phY2NhcmQoaSA9IGZyb20sIGogPSB0bywgdyA9IHdlaWdodCkgJT4lIAogIHNlbGVjdCgtd2VpZ2h0KQoKZWxfMm1fdG9waWMgPC0gdGV4dF9sZGFfZ2FtbWEgJT4lIHNlbGVjdCgtdG9waWMsIC1jb2wpICU+JQogIGxlZnRfam9pbihNX2JpYiAlPiUgc2VsZWN0KFVULCBjb20pICU+JSBkcm9wX25hKGNvbSksIGJ5ID0gYygnZG9jdW1lbnQnID0gJ1VUJykpICU+JQogIGlubmVyX2pvaW4oY29tX25hbWVzX2JpYiAlPiUgc2VsZWN0KGNvbSwgbGFiZWwsIGNvbCksIGJ5ID0gYygnY29tJyA9ICdjb20nKSkgJT4lCiAgcmVuYW1lKGZyb20gPSBsYWJlbC55LAogICAgICAgICB0byA9IGxhYmVsLngsCiAgICAgICAgIHdlaWdodCA9IGdhbW1hKSAlPiUgIyBnZW5lcmljCiAgc2VsZWN0KGZyb20sIHRvLCB3ZWlnaHQsIGNvbCkgJT4lIAogIGRyb3BfbmEoKSAlPiUgCiAgY291bnQoZnJvbSwgdG8sIGNvbCwgd3QgPSB3ZWlnaHQsIG5hbWUgPSAnd2VpZ2h0JykgJT4lCiAgZmlsdGVyKHBlcmNlbnRfcmFuayh3ZWlnaHQpID49IDAuMjUpICU+JQogIHdlaWdodF9qYWNjYXJkKGkgPSBmcm9tLCBqID0gdG8sIHcgPSB3ZWlnaHQpICU+JSBzZWxlY3QoLXdlaWdodCkKCiMgZ3JhcGgKZ18zbSA8LSBlbF8ybV9rYiAlPiUgCiAgYmluZF9yb3dzKGVsXzJtX3RvcGljKSAlPiUKICBhc190YmxfZ3JhcGgoZGlyZWN0ZWQgPSBUUlVFKSAlTj4lCiAgbGVmdF9qb2luKG5sXzNtLCBieSA9ICduYW1lJykgJT4lCiAgbXV0YXRlKAogICAgbGV2ZWwgPSBjYXNlX3doZW4oCiAgICAgIHR5cGUgPT0gIktCIiB+IDEsCiAgICAgIHR5cGUgPT0gIlJBIiB+IDIsCiAgICAgIHR5cGUgPT0gIlRQIiB+IDMpLAogICAgY29vcmRfeSA9IDAuMSwKICAgIGNvb3JkX3ggPSAwLjAwMSArIDEvKG1heChsZXZlbCktMSkgKiAobGV2ZWwtMSkKICAgICkgICVOPiUKICBmaWx0ZXIoIWlzLm5hKGxldmVsKSkKYGBgCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KIyMgQnVpbGQgc2Fua2V5IHBsb3QKZmlnIDwtIHBsb3RfbHkodHlwZSA9ICJzYW5rZXkiLCAKICAgICAgICAgICAgICAgb3JpZW50YXRpb24gPSAiaCIsCiAgICAgICAgICAgICAgIGFycmFuZ2VtZW50ID0gInNuYXAiLAogIG5vZGUgPSBsaXN0KAogICAgbGFiZWwgPSBnXzNtICVOPiUgYXNfdGliYmxlKCkgJT4lIHB1bGwobmFtZSksCiAgICB4ID0gZ18zbSAlTj4lIGFzX3RpYmJsZSgpICU+JSBwdWxsKGNvb3JkX3gpLAogICAgeSA9IGdfM20gJU4+JSBhc190aWJibGUoKSAlPiUgcHVsbChjb29yZF95KSwKICAgIGNvbG9yID0gZ18zbSAlTj4lIGFzX3RpYmJsZSgpICU+JSBwdWxsKGNvbCksIAogICAgcGFkID0gNAogICksIAogIGxpbmsgPSBsaXN0KAogICAgc291cmNlID0gKGdfM20gJUU+JSBhc190aWJibGUoKSAlPiUgcHVsbChmcm9tKSkgLTEsCiAgICB0YXJnZXQgPSAoZ18zbSAlRT4lIGFzX3RpYmJsZSgpICU+JSBwdWxsKHRvKSkgLTEsCiAgICB2YWx1ZSA9ICBnXzNtICVFPiUgYXNfdGliYmxlKCkgJT4lIHB1bGwod2VpZ2h0X2phYyksCiAgICBjb2xvciA9IGdfM20gJUU+JSBhc190aWJibGUoKSAlPiUgcHVsbChjb2wpICU+JSBjb2wycmdiKCkgJT4lIGFzLm1hdHJpeCgpICU+JSB0KCkgJT4lIGFzX3RpYmJsZSgpICU+JSAKICAgICAgbXV0YXRlKGNvbF9yZ2IgPSBwYXN0ZTAoJ3JnYmEoJywgcmVkLCAnLCcgLCBncmVlbiwgJywnLCBibHVlLCAnLDAuNzUpJykpICU+JSAgcHVsbChjb2xfcmdiKQogICAgKQopICU+JSAKICBsYXlvdXQodGl0bGUgPSBwYXN0ZSgnS25vd2xlZGdlIEJhc2VzLCBSZXNlYXJjaCBBcmVhcyAmIFRvcGljczonLCB2YXJfaW5zdCwgJ0ZpZWxkIGFyb3VuZCBEZXB0LicsIHZhcl9kZXB0LCBzZXAgPSAnICcpLAogICAgICAgICBtYXJnaW4gPSBsaXN0KGwgPSA1MCwgciA9IDUwLCBiID0gMTAwLCB0ID0gMTAwLCBwYWQgPSAyKSkgCmBgYAoKCiMjIEpvaW50IE92ZXJ2aWV3IG92ZXIgS25vd2xlZGdlIEJhc2VzLCBSZXNlYXJjaCBBcmVhcywgYW5kIFRvcGljcwoKVGhpcyBwbG90IHNob3dzIHRoZSBjb25uZWN0aW9uIG9mIHB1YmxpY2F0aW9ucyBpbiB0aGUgcmVzZWFyY2ggYXJlYXMgdG8ga25vd2xlZGdlIGJhc2VzIChieSBjaXRhdGlvbnMpIGFuZCB0b3BpY3MgKGJ5IGdhbW1hLCBkb2N1bWVudC10b3BpYyB3ZWlnaHQpCgpgYGB7ciwgZmlnLmhlaWdodD0gMTAsIGZpZy53aWR0aD0xNX0KZmlnCmBgYAoKCgojIFRyZW5kcyAKCmBgYHtyfQp1bmlfc2ltIDwtIHJlYWRfcmRzKHBhc3RlMCgnLi4vLi4vdGVtcC91bmlfc2ltXycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkKYGBgCgojIyBMZWFkLUxhZyBBbmFseXNpcyAKCmBgYHtyLCBmaWcuaGVpZ2h0PTUsIGZpZy53aWR0aD03LjV9CmRlc2MgPC0gdW5pX3NpbSAlPiUgCiAgZmlsdGVyKEFVX1VOID09IHBhc3RlKHZhcl9pbnN0LCB2YXJfZGVwdCkpICU+JQogIG11dGF0ZShkZXNjID0gcGFzdGUwKCdOOiAnLCBuLCAnIFxuJywKICAgICAgICAgICAgICAgICAgICAgICAnU2ltaWxhcml0eSB0byBwYXN0OicsIHNpbV9wYXN0ICU+JSByb3VuZCgyKSwgJyBcbicsCiAgICAgICAgICAgICAgICAgICAgICAgJ1NpbWlsYXJpdHkgdG8gZnV0dXJlOiAnLCBzaW1fZnV0dXJlICU+JSByb3VuZCgyKSwgJyBcbicsCiAgICAgICAgICAgICAgICAgICAgICAgJ0xlYWQtTGFnIFNjb3JlOiAnLCBmdXR1cmVfdHJlbmQgJT4lIHJvdW5kKDIpKSkgJT4lIHB1bGwoZGVzYykKICAKICAKdW5pX3NpbSAlPiUKICBzbGljZV9tYXgob3JkZXJfYnkgPSBuLCBuID0gMTAwKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzaW1fcGFzdCwgeSA9IHNpbV9mdXR1cmUpKSArCiAgZ2VvbV9tYXJrX2VsbGlwc2UoYWVzKGZpbHRlciA9IEFVX1VOID09IHBhc3RlKHZhcl9pbnN0LCB2YXJfZGVwdCksIGxhYmVsID0gQVVfVU4sIGZpbGwgPSAncmVkMScpLCBkZXNjcmlwdGlvbiA9IGRlc2MpICsgZ3VpZGVzKGZpbGwgPSBGQUxTRSkgKwogICNnZW9tX3BvaW50KGRhdGEgPSB1bmlfc2ltICU+JSBmaWx0ZXIoQVVfVU4gPT0gcGFzdGUodmFyX2luc3QsIHZhcl9kZXB0KSksIAogICMgICAgICAgICAgIGFlcyhzaXplID0gbiksIGNvbCA9ICdkYXJrcmVkJykgKyAKICBnZW9tX3BvaW50KGFlcyhzaXplID0gbiwgY29sID0gZnV0dXJlX3RyZW5kKSwgYWxwaGEgPSAwLjUpICsKICBnZW9tX3RleHRfcmVwZWwoIAogICAgZGF0YSA9dW5pX3NpbSAlPiUgc2xpY2VfbWF4KG9yZGVyX2J5ID0gbiwgbiA9IDUpICU+JSBmaWx0ZXIoQVVfVU4gIT0gcGFzdGUodmFyX2luc3QsIHZhcl9kZXB0KSksICMgRmlsdGVyIGRhdGEgZmlyc3QKICAgIGFlcyhsYWJlbCA9IEFVX1VOKSwKICAgIGJveC5wYWRkaW5nID0gMSwgbWF4Lm92ZXJsYXBzID0gSW5mKSArCiAgZ2VvbV9hYmxpbmUoaW50ZXJjZXB0ID0gMCwgc2xvcGUgPSAxLCBsaW5ldHlwZSA9ICJkYXNoZWQiLCBjb2wgPSAnc25vdzMnKSArCiAgc2NhbGVfY29sb3VyX2dyYWRpZW50KGxvdyA9ICJibHVlIiwgaGlnaCA9ICJyZWQiLCBuYW1lID0gIkxlYWQtTGFnIFNjb3JlIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICdib3R0b20nKSArCiAgbGFicyh4ID0gJ1NpbWlsYXJpdHkgdG8gcGFzdCcsCiAgICAgICB5ID0gJ1NpbWlsYXJpdHkgdG8gZnV0dXJlJywKICAgICAgIHRpdGxlID0gcGFzdGUoJ0ZpZWxkIExlYWQtTGFnIEFuYWx5c2lzOicsIHZhcl9pbnN0LCB2YXJfZGVwdCwgc2VwID0gJyAnKSwKICAgICAgIHN1YnRpdGxlID0gcGFzdGUoJ1RpbWVmcmFtZTonLCBQWV9taW4sICctJywgUFlfbWF4ICwgc2VwID0gJyAnKSwKICAgICAgIGNhcHRpb24gPSAneCBhbmQgeSBheGlzJykKIyArIGxpbXMoeCA9IGMoMC42MjUsIDAuNzI1KSwgeSA9IGMoMC42MjUsIDAuNzI1KSkKYGBgCgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTkVYVCBQQVJUICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CgojIENvbGxhYm9yYXRpb24gCgpgYGB7cn0KZWxfaW5zdCA8LSByZWFkUkRTKHBhc3RlMCgnLi4vLi4vdGVtcC9lbF9pbnN0XycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkKYGBgCgoKYGBge3J9CmdfaW5zdCA8LSBlbF9pbnN0ICU+JSBhc190YmxfZ3JhcGgoZGlyZWN0ZWQgPSBGQUxTRSkgJUU+JQogIGZpbHRlcih3ZWlnaHQgPj0gY3V0b2ZfZWRnZV9jaXQgKSAlTj4lCiAgZmlsdGVyKCFub2RlX2lzX2lzb2xhdGVkKCkpCmBgYAoKIyMgQ29sbGFib3JhdGlvbiBuZXR3b3JrIAoKYGBge3IsIGZpZy5oZWlnaHQ9IDEwLCBmaWcud2lkdGg9MTV9CmdfaW5zdCAlTj4lIAogIG11dGF0ZShjZW50ID0gY2VudHJhbGl0eV9kZWdyZWUod2VpZ2h0cyA9IHdlaWdodCkpICU+JQogIGZpbHRlcihuYW1lID09IHBhc3RlKHZhcl9pbnN0LCB2YXJfZGVwdCkgIHwgcmFuaygtY2VudCkgPD0gMTAwICkgJT4lCiAgZ2dyYXBoKGxheW91dCA9ICJmciIpICsgCiAgZ2VvbV9lZGdlX2xpbmsoYWVzKHdpZHRoID0gd2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICAjY29sb3IgPSAuTigpJG5hbWVbZnJvbV0gPT0gcGFzdGUodmFyX2luc3QsIHZhcl9kZXB0KSB8IC5OKCkkbmFtZVtmcm9tXSA9PSBwYXN0ZSh2YXJfaW5zdCwgdmFyX2RlcHQpLAogICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAod2VpZ2h0ID49IHdlaWdodCAgJT4lIHF1YW50aWxlKDAuMjUpKSkKICAgICAgICAgICAgICAgICAsIGFscGhhID0gMC4yNSkgICsgCiAgZ2VvbV9ub2RlX3BvaW50KGFlcyhzaXplID0gY2VudCksIGNvbCA9ICdzdGVlbGJsdWUxJykgICsgCiAgZ2VvbV9ub2RlX3RleHQoYWVzKGxhYmVsID0gbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBjZW50LAogICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAoY2VudCA+PSBjZW50ICAlPiUgcXVhbnRpbGUoMC44KSkpLCByZXBlbCA9IFRSVUUpICsKICAjdGhlbWVfZ3JhcGgoYmFzZV9mYW1pbHkgPSAiQXJpYWwiKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gJ2JvdHRvbScpICsKICBzY2FsZV9lZGdlX3dpZHRoX2NvbnRpbnVvdXMocmFuZ2UgPSBjKDAuNSwgNSkpICArCiAgc2NhbGVfZWRnZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImdyZXkiLCAicmVkIiksIG5hbWUgPSAnMXN0IGRlZ3JlZScpICsKICBzY2FsZV9zaXplKHJhbmdlID0gYygwLjUsMTApKSAKYGBgCgojIEVuZG5vdGVzCgpgYGB7cn0Kc2Vzc2lvbkluZm8oKQpgYGAKCjwhLS0tCiMgU2VlZCBBcnRpY2xlcwoKKipOb3RlOioqIFRoZSBzZWVkIGFydGljbGVzIGRlZW1lZCByZXByZXNlbnRhdGl2ZSBmb3IgdGhlIGFjdGl2ZSBhcmVhcyBvZiByZXNlYXJjaCBpbiB0aGUgaW5zdGl0dXRpb24sIGFuZCBpbmNsdWRlIGF1dGhvcnMgYWZmaWxpYXRlZCB3aXRoIHRoZSBpbnN0aXR1dGlvbi4gVGhlIGRlcGFydG1lbnRzIHJlc2VhcmNoIGZpZWxkIGlzIGlkZW50aWZpZWQgYnkgc2VsZWN0aW5nIHRoZSAyMDAwIG1vc3Qgc2ltaWxhciBwdWJsaWNhdGlvbnMgdG8gdGhlIHNlbGVjdGVkIHNlZWQgYXJ0aWNsZXMuIFNlZSBgVGVjaG5pY2FsIGRlc2NyaXB0aW9uYGZvciBhZGRpdGlvbmFsIGV4cGxhbmF0aW9ucy4KCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQpzZWVkIDwtY29udmVydDJkZihmaWxlID0gcGFzdGUwKCcuLi8uLi9kYXRhL3NlZWRzL3Njb3B1c18nLCBzdHJfdG9fbG93ZXIodmFyX2luc3QpLCAnXycsIHN0cl90b19sb3dlcih2YXJfZGVwdCksICdfc2VlZF9zZWxlY3QuY3N2JyksIGRic291cmNlID0gInNjb3B1cyIsIGZvcm1hdCA9ICJjc3YiKSAlPiUKICBhc190aWJibGUoKSAlPiUKICBtdXRhdGUoc2VlZCA9IFRSVUUpIApgYGAKCmBgYHtyfQpzZWVkICU+JQogIHNlbGVjdChBVSwgUFksIFRJLCBKSSkgJT4lCiAgbXV0YXRlKEFVID0gQVUgJT4lIHN0cl90cnVuYygzMCksCiAgICAgICAgIFRJID0gVEkgJT4lIHN0cl90cnVuYygxMDApLAogICAgICAgICBKSSA9IEpJICU+JSBzdHJfdHJ1bmMoMzApKSAlPiUKICBrYWJsZSgpICU+JQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIiksIGZvbnRfc2l6ZSA9IDEwKQpgYGAKCi0tLT4K